package org.forever.util
{
	/**
	 * 基于列表实现的位置迭代器
	 */
	public class IteratorPosition implements Iterator
	{
		private var list:List;//列表
		private var nextPosition:Position;//当前（下一个）位置
		
		//默认构造方法
		public function IteratorPosition(L:List)
		{
			list = L;
			if (list.isEmpty())//若列表为空，则
				nextPosition = null;//当前位置置空
			else//否则
				nextPosition = list.first();//从第一个位置开始
		}
		
		/**检查迭代器中是否还有剩余的位置*/
		public function hasNext():Boolean
		{
			return (nextPosition!=null);
		}
		
		/**返回迭代器中的下一位置*/
		public function getNext():Object
		{
			if(!hasNext()){
				throw new Error("异常：没有下一位置");
			}
			var currentPosition:Position = nextPosition;
			if (currentPosition == list.last())//若已到达尾位置，则
				nextPosition = null;//不再有下一个位置
			else//否则
				nextPosition = list.getNext(currentPosition);//转向下一位置
			return currentPosition;
		}
	}
}